package org.bigdata.framework.core.protocol;

import java.util.HashMap;
import java.util.List;

import org.bigdata.framework.core.model.BalanceAccount;
import org.bigdata.framework.core.model.CountAccount;
import org.bigdata.framework.core.model.IpLoginNumber;
import org.bigdata.framework.core.model.MemberProject;
import org.bigdata.framework.core.model.PayOrder;
import org.bigdata.framework.core.model.PayOrderDetail;
import org.bigdata.framework.core.model.PayRecharge;
import org.bigdata.framework.core.model.Project;
import org.bigdata.framework.core.model.ProjectProduct;
import org.bigdata.framework.core.model.TimeAccount;


/**
 * 交易相关接口
 * 
 * @author vimes 2017-2-7 17:02:18
 */
public interface IPayService {

	/* 余额账户-次数账户-项目-限时账户-会员项目-项目产品库模块 start */
	
	/* 余额账户 start */
	BalanceAccount saveBalanceAccount(BalanceAccount balanceAccount);
	BalanceAccount editBalanceAccount(BalanceAccount balanceAccount);
	void deleteBalanceAccount(BalanceAccount balanceAccount);
	
	BalanceAccount findBalanceAccount(Integer id);
	List<BalanceAccount> getBalanceAccount();
	List<BalanceAccount> getBalanceAccount(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getBalanceAccountCount(HashMap<String, Object> queryParams);
	/* 余额账户 end */
	
	/* 次数账户 start */
	CountAccount saveCountAccount(CountAccount countAccount);
	CountAccount editCountAccount(CountAccount countAccount);
	void deleteCountAccount(CountAccount countAccount);
	
	CountAccount findCountAccount(Integer id);
	List<CountAccount> getCountAccount();
	List<CountAccount> getCountAccount(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getCountAccountCount(HashMap<String, Object> queryParams);
	/* 次数账户 end */

	/* 项目 start */
	Project saveProject(Project project);
	Project editProject(Project project);
	void deleteProject(Project project);
	
	Project findProject(Integer id);
	List<Project> getProject();
	List<Project> getProject(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getProjectCount(HashMap<String, Object> queryParams);
	/* 项目 end */
	
	/* 限时账户 start */
	TimeAccount saveTimeAccount(TimeAccount timeAccount);
	TimeAccount editTimeAccount(TimeAccount timeAccount);
	void deleteTimeAccount(TimeAccount timeAccount);
	
	TimeAccount findTimeAccount(Integer id);
	List<TimeAccount> getTimeAccount();
	List<TimeAccount> getTimeAccount(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getTimeAccountCount(HashMap<String, Object> queryParams);
	/* 限时账户 end */
	
	/* 会员-项目 start */
	MemberProject saveMemberProject(MemberProject memberProject);
	MemberProject editMemberProject(MemberProject memberProject);
	void deleteMemberProject(MemberProject memberProject);
	
	MemberProject findMemberProject(Integer id);
	List<MemberProject> getMemberProject();
	List<MemberProject> getMemberProject(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getMemberProjectCount(HashMap<String, Object> queryParams);
	/* 会员-项目 end */
	
	/* 项目-产品库 start */
	ProjectProduct saveProjectProduct(ProjectProduct projectProduct);
	ProjectProduct editProjectProduct(ProjectProduct projectProduct);
	void deleteProjectProduct(ProjectProduct projectProduct);
	
	ProjectProduct findProjectProduct(Integer id);
	List<ProjectProduct> getProjectProduct();
	List<ProjectProduct> getProjectProduct(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getProjectProductCount(HashMap<String, Object> queryParams);
	/* 项目-产品库 end */
		
	/* 充值管理 start*/
	PayRecharge savePayRecharge(PayRecharge payRecharge);
	PayRecharge editPayRecharge(PayRecharge payRecharge);
	void deletePayRecharge(PayRecharge payRecharge);
	
	PayRecharge findPayRecharge(Integer id);
	List<PayRecharge> getPayRecharge();
	List<PayRecharge> getPayRecharge(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getPayRechargeCount(HashMap<String, Object> queryParams);
	
	/* 充值管理 end*/
	
	/* 订单管理 start*/
	PayOrder savePayOrder(PayOrder payOrder);
	PayOrder editPayOrder(PayOrder payOrder);
	void deletePayOrder(PayOrder payOrder);
	
	PayOrder findPayOrder(Integer id);
	List<PayOrder> getPayOrder();
	List<PayOrder> getPayOrder(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getPayOrderCount(HashMap<String, Object> queryParams);
	
	/* 订单管理 end*/
	/* 订单详情 start*/
	PayOrderDetail savePayOrderDetail(PayOrderDetail payOrderDetail);
	PayOrderDetail editPayOrderDetail(PayOrderDetail payOrderDetail);
	void deletePayOrderDetail(PayOrderDetail payOrderDetail);
	
	PayOrderDetail findPayOrderDetail(Integer id);
	List<PayOrderDetail> getPayOrderDetail();
	List<PayOrderDetail> getPayOrderDetail(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getPayOrderDetailCount(HashMap<String, Object> queryParams);
	
	/* 订单详情 end*/
	/* ip范围 start*/
	IpLoginNumber saveIpLoginNumber(IpLoginNumber ipLoginNumber);
	IpLoginNumber editIpLoginNumber(IpLoginNumber ipLoginNumber);
	void deleteIpLoginNumber(IpLoginNumber ipLoginNumber);
	
	IpLoginNumber findIpLoginNumber(Integer id);
	List<IpLoginNumber> getIpLoginNumber();
	List<IpLoginNumber> getIpLoginNumber(HashMap<String, Object> queryParams, int pageNumber, int pageSize);
	Integer getIpLoginNumberCount(HashMap<String, Object> queryParams);
	
	/* ip范围 end*/
	/* 余额账户-次数账户-项目-限时账户模块-会员项目-项目产品库 end */
}
